The present invention generally relates to the field of website infrastructure development. Specifically, the present invention relates to a system and method for scaling website databases and directing requests for dynamic content.
Many of today""s commercial websites utilize a three layer architecture consisting of: (1) a web server layer, (2) an application server layer, and (3) a database layer. The web server layer typically has one or more web server clusters, each web server cluster having a plurality of web servers. In the three layer architecture, the web servers generally store stagnant data or content, such as HTML scripts and Java code, which is transmitted to a client""s computer in response to the client""s request for such stagnant content. However, when a client requests dynamic content that must be generated in real-time, the web-server issues a request to an application server within the site""s application server layer for such dynamic content.
The application server layer comprises one or more application server clusters, each cluster having one or more applications servers. The application servers provide dynamic content based on information relating to or received from a specific client. That is, the application server can provide the dynamic content based on either a client""s specific request, i.e., information inputted onto an input screen by the client, or the client information previously stored in a database in the site""s database layer. The client information stored in the database layer can include client""s personal or financial information provided by the client during his/her prior visit to the web site, information regarding the client""s past activity on the website, or information relating to transactions consummated by the client on the site. For example, the database layer of a web site operated by a bank or financial institution can store information regarding the activity within and status of accounts maintained by a client of the bank.
Web servers, application servers, and databases typically communicate with one another using standard communication protocols, such as TCP/IP. However, some application server vendors have adopted proprietary communications protocols for their application servers, thereby posing potential interoperability problems in connecting to other vendors"" web servers and databases.
As web site traffic grows, the site""s infrastructure must be easily scalable to accommodate the increasing load on the servers and databases. For example, a system for scaling server clusters is delineated in applicant""s U.S. patent applications Ser. No. 09/565,259, now U.S. Pat. No. 6,389,448 and U.S. Provisional Patent Applications No. 60/169,196, No. 60/201,810 and No. 60/202,329, each of which are herein incorporated by reference in their entirety. It is appreciated that scaling of an application server is vendor dependent and some application servers may rot scalable. However, databases are not currently easily scalable and the web site owner has limited options when the database is overloaded. When the web site database server has reached its limits in accepting and processing the number simultaneous connections, the web site owner currently has two options available for increasing the capacity of the database server. The first option is to replace the existing database or database system with a higher capacity database or database system and the second option is to add another database and appropriately modify the application servers (i.e., applications running on the application servers) to recognize the new database. However, both of these options are costly and complicated propositions for web site owners and/or operators. Additionally, the second option requires communized code for the application servers. Further, it is appreciated that these two options offer only short term solutions to the problem and the web site owners and/or operators may potentially face this problem along with its associated cost to correct the problem when the database again reaches its capacity limit.
Typically, Internet related applications use a client/server model, wherein a client sends its request to the server via the Internet or other comparable communications or computer network. The server processes the request, often involving accessing and changing the dynamic content related to the client, and sends the results back to the client. The server""s ability to identify the dynamic content involved in the client requests is crucial to the performance of many Internet applications. This identification is not trivial since in many cases the client request contains incomplete or no information about the dynamic content. Only the server or content source has the whole knowledge about the content involved. Accordingly, the present invention provides a system and method for identifying the dynamic content involved in every client request requiring access to the dynamic content.
Therefore, it is an object of the present invention to provide a system and method that overcomes the shortcomings of the prior art system.
Another object of the present invention is to provide a system and method which scales web site databases.
A further object of the present invention is to provide a system and method which directs a client""s request for dynamic content or data to an application server connected to a database having the most current version of such data.
Still another object of the present invention is to provide a system and method as aforesaid, which balances load among the application servers.
In accordance with one embodiment, the present invention comprises a dynamic content router, database replication agents, and plug-ins integrated into the web servers. The web server plug-ins intercept and direct a client""s request for dynamic content to the dynamic content router. The dynamic content router then determines the appropriate application server or application cluster for the client""s request based on number of factors, including but not limited to the content availability, data server""s capacity and session persistence. The dynamic content router transmits or forwards the identity of the selected application server to the web server plug-in, which causes the client""s request to be forwarded or routed to the selected application server. However, if a session already exists between the client and one of the application servers, the dynamic content router routes all requests to such application server.
Once the web server plug-in receives the identity of the selected application server, the web server plug-in causes its associated web server to establish a connection with the selected application server. Upon establishing a connection with the web server, the selected application server initiates a session by generating and transmitting a cookie or other comparable session identifier to the web server. The web server forwards the cookie or session identifier to the client""s computer for storage.
When a session is established between the client and the selected application server, the dynamic content router examines the session communications to determine or extract a client identifier (also referred to herein as a content identifier). The dynamic content router utilizes the content identifier to determine if the client is already logged onto one of the application servers on the site. If the dynamic content router determines that the client had previously logged onto one of the application servers on the web site, the dynamic content router verifies whether client""s previous login information is available to the selected application server. If the client""s current application server does not have access to the client""s login information, then the dynamic content router directs the web server plug-in to establish a connection with an application server that has access to the client""s login information.
In accordance with an embodiment of the present invention, the system additionally includes an application server proxy that acts as an interface between the web servers and application servers utilizing proprietary communications protocols.
In accordance with another embodiment of the present invention, the dynamic content router is scalable. For example, when the web site operator and/or owner adds another dynamic content router when the capacity of the existing dynamic router is exceeded, the web server plug-ins of the present invention automatically selects a least loaded dynamic content router for routing the client""s requests.
Various other objects, advantages, and features of the present invention will become readily apparent from the ensuing detailed description, and the novel features will be particularly pointed out in the appended claims.